<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Perl-Modul</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Perl-Modul"> <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Perl-Modul rootpage-Perl-Modul skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Perl-Modul</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p>Ein <b>Perl-Modul</b> ist eine separate <a href="Komponente_(Software)" class="mw-redirect" title="Komponente (Software)">Komponente</a> eines <a href="Computerprogramm" title="Computerprogramm">Computerprogramms</a>, das in <a href="Perl_(Programmiersprache)" title="Perl (Programmiersprache)">Perl</a> geschrieben wurde.
</p><p>Ein Modul besitzt seinen <a href="Quellcode" class="mw-redirect" title="Quellcode">Quellcode</a> in einer Moduldatei der Endung <code>.pm</code>, die wiederum ein <code>package</code> beinhaltet, also einen eigenen Namensraum (was allerdings nicht zwingend erforderlich ist); die Struktur des Paketnamens (und damit des Namensraumnamens) spiegelt das Dateisystem wider (sodass das Modul <i>Net::FTP</i> in der Datei <code>Net/FTP.pm</code> liegt). Darüber hinaus ist ein Perl-Modul mit Namensraum als Klasse zu verwenden, falls <a href="Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierte Programmierung</a> angewandt wird (in Perl sind Namensräume äquivalent mit Klassen, müssen jedoch nicht als solche verwendet werden).
</p><p>Eine Sammlung von Modulen mit zugehöriger Dokumentation, Build-Skripten etc. bildet eine <b><a href="Distribution_(Software)" title="Distribution (Software)">Distribution</a></b>. Die Perl-Community pflegt eine große Sammlung an Paketen etc. auf <a href="CPAN" title="CPAN">CPAN</a>.
</p><p>Perl als Programmiersprache erlaubt vielfältige Programmierstile. Man kann sowohl ein Modul finden, das prozedural („herkömmlich“, ähnlich wie <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a>) geschrieben ist (z. B. <i>Test-Simple</i>), als auch Module mit objektorientierten Schnittstellen (z. B. <i>XML::Parser</i>), und sowohl das eine als auch das andere können ihre Aufgaben effizient erfüllen, da es u. a. auf den Kontext ankommt: In Verbindung mit <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a> ist eine objektorientierte Modulschnittstelle sehr viel sinnvoller als z. B. bei einer mathematischen Funktionsbibliothek. Module können auch als <a href="Mixin" title="Mixin">Mixin</a>-Methoden genutzt werden oder ein <a href="Compiler-Anweisung" title="Compiler-Anweisung">Pragma</a> sein (z. B. <i>strict</i>), was dann einen unmittelbaren Effekt auf das Programm hat. Außerdem können Module genutzt werden, um die Syntax der Sprache selbst zu ändern. Module haben meist nur einen Effekt auf den Sichtbarkeitsbereich, in dem sie geladen wurden (meist eine Datei).
</p><p>Perl-Modulen ist es gemein, eingebettete Dokumentation als <a href="Plain_Old_Documentation" title="Plain Old Documentation">Plain Old Documentation</a> zu besitzen. POD ist flexibel genug, Artikel, Webseiten oder gar Bücher zu schreiben (z. B. <i>Programming Perl</i>), im Gegensatz zu <a href="Javadoc" title="Javadoc">javadoc</a>, das auf die Dokumentation von Klassen spezialisiert ist. Normalerweise folgen die Dokumentationen der Struktur einer <i><a href="Manpage" title="Manpage">manpage</a></i>.
</p><p>Der Code auf dieser Seite basiert auf Perl 5.10.0 und sollte somit auch mit Perl > 5.10.0 ausgeführt werden können. Mit beispielsweise Perl 5.6 können insbesondere die Namensraumbeispiele nicht ausgeführt werden. Es wird (Ausnahmen sind gekennzeichnet) das Benutzen des Pragmas <code>strict</code> vorausgesetzt, was saubereren Code zur Folge hat.
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<p>Eine „Hello-World“-Funktion kann auf verschiedene Weise mit Modulen realisiert werden, wobei es nicht zwingend ist, die Funktion in ein Modul (In Perl eher Namensraum; <code>package</code>) zu packen (im Gegensatz zu <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a>); vielmehr kann eine Funktion überall definiert und genutzt werden (in Modulen ebenfalls über Einbindung mit <code>use</code>). Trotzdem ist es aus Gründen der Übersichtlichkeit üblich, die Elemente eines Perl-Moduls in einen Namensraum (<code>package</code>) zu stecken. Eine <i>Hello-World</i>-Funktion sähe so aus:
</p>
<div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span></span><span class="k">package</span><span class="w"> </span><span class="nn">module1</span><span class="p">;</span>
<span class="k">sub</span><span class="w"> </span><span class="nf">hello</span><span class="p">(){</span><span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s">"Hello, World!\n"</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Prozeduraler_Ansatz">Prozeduraler Ansatz</h3></div>
<p>In <span style="font-family:monospace;">hello.pm</span> wird die Funktion <code>hello()</code> definiert und implementiert, die im Hauptscript <span style="font-family:monospace;">main.pl</span> ausgeführt wird.
</p><p><i>main.pl</i>:
</p>
<div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span></span><span class="ch">#!/usr/bin/perl -w</span>
<span class="k">use</span><span class="w"> </span><span class="nn">strict</span><span class="p">;</span><span class="w"> </span><span class="c1"># Pragma strict wird genutzt, sodass eine besonders strenge Prüfung durchgeführt wird</span>
<span class="k">use</span><span class="w"> </span><span class="nn">world::hello</span><span class="p">;</span><span class="w"> </span><span class="c1"># hello.pm world/hello.pm, wobei die Basis-Verzeichnisse, also die Verzeichnis, in denen</span>
<span class="w"> </span><span class="c1"># world/ liegen könnte, in einer Pfadvariable namens @INC angegeben sind, die auch das</span>
<span class="w"> </span><span class="c1"># aktuelle Verzeichnis enthält</span>
<span class="c1"># entweder</span>
<span class="nn">hello::</span><span class="n">hallo</span><span class="p">();</span>
<span class="c1"># oder</span>
<span class="nn">hello</span><span class="o">-></span><span class="n">hallo</span><span class="p">(</span><span class="s">"Erde"</span><span class="p">);</span>
</pre></div>
<hr>
<p><i>hello.pm</i>:
</p>
<div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span></span><span class="k">package</span><span class="w"> </span><span class="nn">hello</span><span class="p">;</span>
<span class="c1"># Zeilen mit einem "=" kennzeichnen integrierte PO-Dokumentation.</span>
<span class="c1"># Ein POD-Abschnitt endet mit "=cut" und kann an beliebiger Stelle stehen.</span>
<span class="cm">=head1 NAME</span>
<span class="cm">Hello:World -- DIE Hello-World-Implementierung.</span>
<span class="cm">=head1 ZUSAMMENFASSUNG</span>
<span class="cm">use Hello::World;</span>
<span class="cm">hallo();</span>
<span class="cm">hallo("Erde");</span>
<span class="cm">=head2 Funktionen</span>
<span class="cm">Folgende Funktionen stehen zur Verfügung:</span>
<span class="cm">=head3 hallo()</span>
<span class="cm">hallo()</span>
<span class="cm">hallo($etw_anderes)</span>
<span class="cm">=head1 Autor</span>
<span class="cm">Otto Normalhacker</span>
<span class="cm">=cut</span>
<span class="k">sub</span><span class="w"> </span><span class="nf">hallo</span><span class="p">(;$)</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$etw_anderes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">shift</span><span class="w"> </span><span class="nv">@_</span><span class="p">;</span>
<span class="w"> </span><span class="nb">defined</span><span class="w"> </span><span class="nv">$etw_anderes</span><span class="w"> </span><span class="p">?</span><span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s">"Hello $etw_anderes !\n"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="k">print</span><span class="w"> </span><span class="s">"Hello world!\n"</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="c1"># Jedes Perl-Modul muss einen wahren Wert an den Compiler liefern, sonst gibt es einen Error</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Objektorientierter_Ansatz">Objektorientierter Ansatz</h3></div>
<p>Objektorientierte Lösungen erfordern in allen Sprachen mehr Code und besitzen eine geringere Effizienz in der Ausführung. Während der Entwicklung ist die Objektorientierung allerdings oft effizienter als eine prozedurale Lösung. In Perl ist die Objektorientierung durch Referenzen (Skalare mit einer Speicheradresse) auf Code und einen Hash realisiert.
</p><p><i>main.pl</i>:
</p>
<div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span></span><span class="ch">#!/usr/bin/perl -w</span>
<span class="k">use</span><span class="w"> </span><span class="nn">strict</span><span class="p">;</span>
<span class="k">use</span><span class="w"> </span><span class="nn">Hello::World</span><span class="p">;</span><span class="w"> </span><span class="c1"># Modul liegt in Hello/World.pm</span>
<span class="k">my</span><span class="w"> </span><span class="nv">$hello</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="nn">Hello::</span><span class="n">World</span><span class="p">;</span><span class="w"> </span><span class="c1"># Objekt erzeugen</span>
<span class="nv">$hello</span><span class="o">-></span><span class="n">gib_begr_aus</span><span class="p">;</span><span class="w"> </span><span class="c1"># "Hello world" ausgeben</span>
<span class="nv">$hello</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$hello</span><span class="o">-></span><span class="n">aendere_ding</span><span class="p">(</span><span class="s">"galaxis"</span><span class="p">);</span><span class="w"> </span><span class="c1"># Zu begrüßendes Objekt in "Galaxis" ändern und das geänderte Objekt zurückspeichern</span>
<span class="k">my</span><span class="w"> </span><span class="nv">$begr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$hello</span><span class="o">-></span><span class="n">begr_in_string</span><span class="p">;</span><span class="w"> </span><span class="c1"># Begrüßung speichern...</span>
<span class="k">print</span><span class="w"> </span><span class="nv">$begr</span><span class="p">;</span><span class="w"> </span><span class="c1"># und ausgeben</span>
</pre></div>
<hr>
<p><i>World.pm</i>:
</p>
<div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span></span><span class="k">package</span><span class="w"> </span><span class="nn">Hello::World</span><span class="p">;</span><span class="w"> </span><span class="c1"># Im objektorientierten Ansatz muss der Namensraum definiert sein, da in Perl jede Klasse ein Namensraum ist</span>
<span class="k">use</span><span class="w"> </span><span class="nn">strict</span><span class="p">;</span>
<span class="k">use</span><span class="w"> </span><span class="nn">warnings</span><span class="p">;</span>
<span class="c1">#</span>
<span class="c1"># Eventuelle</span>
<span class="c1"># POD-Inhalte</span>
<span class="c1">#</span>
<span class="k">sub</span><span class="w"> </span><span class="nf">new</span><span class="p">($$)</span><span class="w"> </span><span class="p"># Prototyp des Konstruktors</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">shift</span><span class="w"> </span><span class="nv">@_</span><span class="p">;</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">exists</span><span class="w"> </span><span class="nv">$_</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="c1"># Falls nicht anders angegeben, begrüße "world"</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$ding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$_</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$ding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"world"</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$self</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">ding</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="nv">$ding</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="c1"># Hash-Referenz mit Daten wird erzeugt...</span>
<span class="w"> </span><span class="nb">bless</span><span class="p">(</span><span class="nv">$self</span><span class="p">,</span><span class="w"> </span><span class="nv">$class</span><span class="p">);</span><span class="w"> </span><span class="c1"># ... mit dem Klassennamen "abgesegnet"...</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nv">$self</span><span class="p">;</span><span class="w"> </span><span class="c1"># ...und zurückgegeben</span>
<span class="p">}</span>
<span class="k">sub</span><span class="w"> </span><span class="nf">aendere_ding</span><span class="p">($$)</span><span class="w"> </span><span class="p"># Das Ding ändern, das begrüßt wird</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$self</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">shift</span><span class="w"> </span><span class="nv">@_</span><span class="p">;</span><span class="w"> </span><span class="c1"># Objekt annehmen</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$ding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">shift</span><span class="w"> </span><span class="nv">@_</span><span class="p">;</span>
<span class="w"> </span><span class="nv">$self</span><span class="o">-></span><span class="p">{</span><span class="n">ding</span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nv">$ding</span><span class="p">;</span><span class="w"> </span><span class="c1"># Daten manipulieren...</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nv">$self</span><span class="p">;</span><span class="w"> </span><span class="c1"># ...geändertes Objekt zurückgeben</span>
<span class="p">}</span>
<span class="k">sub</span><span class="w"> </span><span class="nf">gib_begr_aus</span><span class="p">($)</span><span class="w"> </span><span class="p"># Die erzeugte Begrüßung auf STDOUT ausgeben</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$self</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">shift</span><span class="w"> </span><span class="nv">@_</span><span class="p">;</span><span class="w"> </span><span class="c1"># Objekt wird wieder angenommen...</span>
<span class="w"> </span><span class="k">print</span><span class="p">(</span><span class="s">"Hello $self->{ding}!\n"</span><span class="p">);</span><span class="w"> </span><span class="c1"># ...und ausgegeben.</span>
<span class="p">}</span>
<span class="k">sub</span><span class="w"> </span><span class="nf">begr_in_string</span><span class="p">($)</span><span class="w"> </span><span class="p"># Die erzeugte Begrüßung als String zurückgeben, z. B. bei Verwendung mit print()</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">my</span><span class="w"> </span><span class="nv">$self</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">shift</span><span class="w"> </span><span class="nv">@_</span><span class="p">;</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"Hello $self->{ding}!\n"</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Namensräume_und_Geltungsbereiche"><span id="Namensr.C3.A4ume_und_Geltungsbereiche"></span>Namensräume und Geltungsbereiche</h2></div>
<p>Ein Perl-Programm hat zur Laufzeit, sofern nicht anders deklariert, den Namensraum <code>main</code> – eine Funktion <code>func1()</code> kann sowohl als <code>func1()</code> als auch als <code>main::func1()</code> gerufen werden; der Wert von <code>$var</code> kann sowohl über <code>$var</code> als auch mit <code>$main::var</code> herausgefunden werden. Es können jederzeit neue Namensräume deklariert und genutzt werden. Variablen, die mit <code>my</code> deklariert wurden, verfügen über keine Namensraumzugehörigkeit und existieren global, jedoch nur innerhalb einer Datei. Variablen, die mit <code>our</code> deklariert werden, verfügen über eine Namensraumzugehörigkeit und existieren völlig global, also auch über Dateigrenzen hinweg, wobei sie allerdings in einer anderen Datei als der mit der Deklaration (also der einbindenden Datei) mit Scope-Resolution-Operator :: und dem Namensraum gerufen werden müssen. In ein und derselben Datei muss eine our-Variable aus fremdem Namensraum nur dann vollqualifiziert (mit :: und Namensraum) gerufen werden, falls im aufrufenden Namensraum bereits eine our- oder my-Variable desselben Namens existiert.
</p>
<div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr"><pre><span></span><span class="k">package</span><span class="w"> </span><span class="nn">namensraum1</span><span class="p">;</span>
<span class="k">my</span><span class="w"> </span><span class="nv">$var</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"foo"</span><span class="p">;</span><span class="w"> </span><span class="c1"># mit my deklarierte Variablen liegen in keinem Namensraum.</span>
<span class="w"> </span><span class="c1"># Ein Rufen mittels $namensraum1::var hat keinen Erfolg, mit $var jedoch überall.</span>
<span class="k">our</span><span class="w"> </span><span class="nv">$var2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"bar"</span><span class="p">;</span><span class="w"> </span><span class="c1"># our deklariert eine an den Namensraum gebundene Variable (our ist nur nötig mit strict)</span>
<span class="nv">$</span><span class="nn">namensraum2::</span><span class="nv">var3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">42</span><span class="p">;</span><span class="w"> </span><span class="c1"># Namensraum existiert noch nicht, wird dabei aber gleich erstellt. (nur, falls strict nicht genutzt wird)</span>
<span class="k">our</span><span class="w"> </span><span class="nv">$</span><span class="nn">namensraum2::</span><span class="nv">var4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">21</span><span class="p">;</span><span class="w"> </span><span class="c1"># Mit und ohne strict: Fehler</span>
<span class="k">my</span><span class="w"> </span><span class="nv">$</span><span class="nn">namensraum2::</span><span class="nv">var5</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">23.11</span><span class="p">;</span><span class="w"> </span><span class="c1"># Fehler, da my nicht namensraumgebunden ist</span>
<span class="k">sub</span><span class="w"> </span><span class="nf">namensraum2</span><span class="p">::hello_w() {</span><span class="w"> </span><span class="k">print</span><span class="p">(</span><span class="s">"Hello World!\n"</span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1"># Geht sowohl mit als auch ohne strict</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Java_Archive" title="Java Archive">Java Archive</a></li>
<li><a href="Objektorientierte_Programmierung" title="Objektorientierte Programmierung">Objektorientierte Programmierung</a></li>
<li><a href="Perl_(Programmiersprache)" title="Perl (Programmiersprache)">Perl</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.cpan.org/">cpan.org</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-11-28" href="https://de.wikipedia.org/wiki/?title=Perl-Modul&oldid=261954598">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>